﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using VLUSM_BusinessLogic;
using VLUSM_BusinessLogic.DataTransferObjects;
using System.Collections.ObjectModel;

namespace VLUSM_Service
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IPortfolioService" in both code and config file together.
    [ServiceContract]
    public interface IPortfolioService
    {
        #region LoaiHoSo
        [OperationContract]
        ObservableCollection<LoaiHoSoDTO> GetLoaiHoSoList();
        [OperationContract]
        ObservableCollection<LoaiHoSoDTO> GetLoaiHoSoByDonViID(int DonViIDFilter);
        [OperationContract]
        ObservableCollection<LoaiHoSoDTO> GetLoaiHoSoByNotYetDonViID(int DonViIDFilter);
        [OperationContract]
        LoaiHoSoDTO GetLoaiHoSoByID(int IDFilter);
        [OperationContract]
        LoaiHoSoDTO GetLoaiHoSoByTen(string TenFilter);
        [OperationContract]
        void SaveLoaiHoSo(LoaiHoSoDTO objdto);
        [OperationContract]
        void SaveLoaiHoSoList(ObservableCollection<LoaiHoSoDTO> objdto);
        [OperationContract(Name = "RemoveLoaiHoSo")]
        void RemoveLoaiHoSo(LoaiHoSoDTO objdto);
        [OperationContract(Name = "RemoveLoaiHoSoByID")]
        void RemoveLoaiHoSo(int IDFilter);
        [OperationContract]
        void SetLoaiHoSoForDonVi(int DonViID, int LoaiHoSoID);
        [OperationContract]
        void SetLoaiHoSoListForDonVi(int DonViID, ObservableCollection<LoaiHoSoDTO> listDTO);
        [OperationContract]
        void UnsetLoaiHoSoForDonVi(int DonViID, int LoaiHoSoID);
        [OperationContract]
        void UnSetLoaiHoSoListForDonVi(int DonViID, ObservableCollection<LoaiHoSoDTO> listDTO);
        #endregion

        #region PhienBanGiao
        [OperationContract]
        ObservableCollection<PhienBanGiaoDTO> GetPhienBanGiaoList();
        [OperationContract]
        PhienBanGiaoDTO GetPhienBanGiaoByID(int IDFilter);
        [OperationContract]
        PhienBanGiaoDTO GetPhienBanGiaoByTen(string TenFilter);
        [OperationContract]
        ObservableCollection<PhienBanGiaoDTO> GetPhienBanGiaoByDonViID(int DonViIDFIlter);
        [OperationContract]
        void SavePhienBanGiao(PhienBanGiaoDTO objdto);
        [OperationContract]
        void SavePhienBanGiaoList(ObservableCollection<PhienBanGiaoDTO> objdto);
        [OperationContract(Name = "RemovePhienBanGiao")]
        void RemovePhienBanGiao(PhienBanGiaoDTO objdto);
        [OperationContract(Name = "RemovePhienBanGiaoByID")]
        void RemovePhienBanGiao(int IDFilter);
        #endregion

        #region HoSoDaNop
        [OperationContract]
        ObservableCollection<HoSoDaNopDTO> GetHoSoDaNopList();
        [OperationContract]
        ObservableCollection<HoSoDaNopDTO> GetHoSoDaNopBySinhVienID(int SinhVienIDFilter);
        [OperationContract]
        ObservableCollection<HoSoDaNopDTO> GetHoSoDaNopByLoaiHoSoID(int LoaiHoSoIDFilter);
        [OperationContract]
        HoSoDaNopDTO GetHoSoDaNopByID(int IDFilter);
        [OperationContract]
        void SaveHoSoDaNop(HoSoDaNopDTO objdto);
        [OperationContract]
        void SaveHoSoDaNopList(ObservableCollection<HoSoDaNopDTO> objdto);
        [OperationContract(Name = "RemoveHoSoDaNop")]
        void RemoveHoSoDaNop(HoSoDaNopDTO objdto);
        [OperationContract(Name = "RemoveHoSoDaNopByID")]
        void RemoveHoSoDaNop(int IDFilter);
        #endregion
    }
}
